/**
 * Nuxt配置
 * https://nuxt.com/docs/api/configuration/nuxt-config
*/
export default defineNuxtConfig({
  /**
   * CSS 属性
   * Nuxt 将会将它包含在应用程序的所有页面中
   * 样式表将被内联到 Nuxt 渲染的 HTML 中，全局注入并存在于所有页面中。
  */
  // css: ['~/assets/css/main.css'],
  app: {
    // baseURL: "/nd/", // 应用访问根目录（http://172.16.100.78:3000/nd/），Default: "/"
    head: { // 自定义头部
      title: '脑洞在线3D打印',
      charset: 'utf-8',
      viewport: 'width=device-width, initial-scale=1',
      bodyAttrs: { // 给body添加class
        class: 'print-body'
      },
      // 外部样式表
      // link: [
      //   { rel: 'stylesheet', href: 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css' }
      // ],
      script: [
        // {
        //   src: 'https://third-party-script.com',
        //   // 有效选项为：'head' | 'bodyClose' | 'bodyOpen'
        //   tagPosition: 'bodyClose' // 分别对应头部 body开始 body末尾
        // },
        // { innerHTML: 'console.log(\'Hello world\')' }
      ]
    },
    // 页面过渡动画
    pageTransition: { name: 'page', mode: 'out-in' }
  },
  /* https://nuxt.com.cn/modules/element-plus */
  elementPlus: { /** Options */ },
  devtools: { enabled: true },

  // 它允许你定义一组规则来自定义Nuxt应用程序的每个路由的渲染方式（以及更多）
  routeRules: {
    /* 为了SEO目的，在构建时生成 */
    // 主页在构建时预渲染(预渲染应用程序的每个路由，并将结果存储为纯HTML文件。)
    '/': { prerender: true },
    '/about-us': { prerender: true },
    '/design-wizard': { prerender: true },
    '/industry-case': { prerender: true },
    '/message-center': { prerender: true },
    '/meterial-introdution': { prerender: true },
    '/online-order': { prerender: true },
    // 缓存1小时
    // '/api/**': { cache: { maxAge: 60 * 60 } },
    // 管理仪表板仅在客户端渲染
    // '/admin/**': { ssr: false },
    // 跳转旧的URL
    // '/old-page': { redirect: '/new-page' }
  },

  // 使用 vite
  vite: {
    css: {
      preprocessorOptions: {
        scss: {
          // 全局样式导入
          additionalData: '@use "@/assets/_colors.scss" as *;'
        }
      }
    }
  },

  devServer: {
    port: 3001, // 端口Default: 3000
  },

  /**
   * 环境覆盖
  */
  $production: {
    routeRules: {
      '/**': { isr: true }
    }
  },

  $development: {
    //
  },

  /**
   * 环境变量和私有令牌：
   *  通过useRuntimeConfig()组合函数暴露给应用程序的其余部分
   *  如：const runtimeConfig = useRuntimeConfig()
   * 注意：需要在构建后使用环境变量指定的私有或公共令牌。
  */
  runtimeConfig: {
    // 仅public可以在客户端获取
    // 只在服务器端可用的私有键
    apiSecret: '123',
    public: {
      apiBase: '/api'
    }
  },

  modules: [
    "@nuxt/image",
    '@element-plus/nuxt'
  ]
})